package com.zzy.config;

import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import javax.sql.DataSource;

/**
 * 使用Java类完成配置文件
 */

@Configuration
public class ActivitiConfig {
    //@Autowired
    @Resource
    private DataSource dataSource;
    /**
     * 初始化配置，将创建25张表
     * @return
     */
    @Bean
    public StandaloneProcessEngineConfiguration processEngineConfiguration() {
        StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
        configuration.setDataSource(dataSource);
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setAsyncExecutorActivate(false);
        return configuration;
    }
    /**
     * 创建引擎
     * @return ProcessEngine
     */
    @Bean
    public ProcessEngine processEngine() {
        return processEngineConfiguration().buildProcessEngine();
    }

    @Bean
    /** 提供一系列管理流程部署和流程定义的API */
    public RepositoryService repositoryService() {
        return processEngineConfiguration().buildProcessEngine().getRepositoryService();
    }
    @Bean
    /**在流程运行时对流程实例进行管理与控制。*/
    public RuntimeService runtimeService() {
        return processEngineConfiguration().buildProcessEngine().getRuntimeService();
    }
    @Bean
    /**对流程任务进行管理，例如任务提醒、任务完成和创建任务等。*/
    public TaskService taskService() {
        return processEngineConfiguration().buildProcessEngine().getTaskService();
    }
    @Bean
    /**对流程的历史数据进行操作，包括查询、删除这些历史数据。*/
    public HistoryService historyService() {
        return processEngineConfiguration().buildProcessEngine().getHistoryService();
    }

/*    @Bean
    public SpringProcessEngineConfiguration processEngineConfiguration() {
        return processEngineConfiguration().buildProcessEngine().getHistoryService();
    }*/


//    @Bean
//    /**提供对流程引擎进行管理和维护的服务，提供对activiti数据库的直接访问【一般不用】*/
//    public ManagementService managementService() {
//        return processEngineConfiguration().buildProcessEngine().getManagementService();
//    }

   /* @Bean
    *//** 表单服务 *//*
    public FormService identityService() {
        return processEngineConfiguration().buildProcessEngine().getHistoryService();
    }*/
    /*@Bean
     *//**提供对流程角色数据进行管理的API，这些角色数据包括用户组、用户及它们之间的关系。*//*
    public IdentityService identityService() {
        return processEngineConfiguration().buildProcessEngine().getHistoryService();
    }*/






}
